Skip to content

[refactor] #117 scrap -> bookmark 리네이밍#119

Merged
ikseong00 merged 5 commits into
developfrom
refactor/#117-bookmark-naming
Feb 17, 2026
Merged

[refactor] #117 scrap -> bookmark 리네이밍#119
ikseong00 merged 5 commits into
developfrom
refactor/#117-bookmark-naming

Conversation

@ikseong00
Copy link
Copy Markdown
Contributor

@ikseong00 ikseong00 commented Feb 16, 2026

🔗 관련 이슈

📙 작업 설명

  • 스크랩 대신 북마크로 명칭을 수정했습니다. (api SerialName 제외)
  • 이슈업은 하지 않았지만 랜덤포즈 상단 X 버튼을 제거했습니다.

Summary by CodeRabbit

릴리스 노트

  • 리팩터

    • 북마크 기능 용어 정리: "스크랩" 용어를 "북마크"로 일관되게 변경
    • 관련 UI 레이블, 아이콘, 메서드명 및 상태 관리 전반에 걸쳐 용어 통일
  • 스타일

    • UI에 표시되는 북마크 관련 아이콘 및 텍스트 레이블 업데이트

기획 용어 변경에 따라 '스크랩'을 '북마크'로 일괄 변경했습니다.

- **변수 및 함수명 변경**: `isScrapped`, `onClickScrap`, `updateScrap` 등을 `isBookmarked`, `onClickBookmark`, `updateBookmark` 등으로 변경했습니다.
- **클래스 및 파일명 변경**: `ScrapPosePagingSource` -> `BookmarkPosePagingSource` 등으로 변경했습니다.
- **API 엔드포인트 및 DTO 변경**: `/api/poses/scrap` -> `/api/poses/bookmark`로 수정하고 관련 DTO(`UpdateScrapRequest` -> `UpdateBookmarkRequest`)를 변경했습니다.
- **UI 텍스트 및 아이콘 변경**: '스크랩'으로 표시되던 텍스트를 '북마크'로 변경하고, 관련 아이콘(`icon_scrap_*` -> `icon_bookmark_*`)도 교체했습니다.
@ikseong00 ikseong00 self-assigned this Feb 16, 2026
@github-actions github-actions Bot requested a review from Ojongseok February 16, 2026 14:04
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 16, 2026

Caution

Review failed

The pull request is closed.

Walkthrough

포즈 기능 전반에서 스크랩(scrap) 관련 API, 메서드, 클래스, 프로퍼티명을 북마크(bookmark)로 일관되게 변경하는 리팩토링입니다. 내부 로직이나 제어 흐름은 변경되지 않으며 명칭 및 UI 텍스트만 업데이트됩니다.

Changes

Cohort / File(s) Summary
Core API 계층
core/data-api/src/main/java/com/neki/android/core/dataapi/repository/PoseRepository.kt
getScrappedPosesFlow()getBookmarkedPosesFlow(), updateScrap()updateBookmark() 메서드명 및 파라미터명 변경
원격 서비스 및 모델
core/data/src/main/java/com/neki/android/core/data/remote/api/PoseService.kt, core/data/src/main/java/com/neki/android/core/data/remote/model/request/UpdateScrapRequest.kt (→ UpdateBookmarkRequest.kt), core/data/src/main/java/com/neki/android/core/data/remote/model/response/PoseDetailResponse.kt, core/data/src/main/java/com/neki/android/core/data/remote/model/response/PoseResponse.kt
API 메서드명, 요청/응답 클래스명, 프로퍼티명을 북마크 용어로 변경하되 JSON 직렬화 이름은 유지
데이터 계층
core/data/src/main/java/com/neki/android/core/data/repository/impl/PoseRepositoryImpl.kt, core/data/src/main/java/com/neki/android/core/data/paging/BookmarkPosePagingSource.kt (← ScrapPosePagingSource.kt)
저장소 메서드명, 페이징 소스 클래스명, 서비스 호출 업데이트
모델 및 디자인 시스템
core/model/src/main/java/com/neki/android/core/model/Pose.kt, core/designsystem/src/main/java/com/neki/android/core/designsystem/actionbar/NekiActionBar.kt, core/ui/src/main/java/com/neki/android/core/ui/component/FilterBar.kt
isScrapped 프로퍼티 → isBookmarked, 프리뷰 아이콘 및 텍스트 업데이트
포즈 피처 API
feature/pose/api/src/main/java/com/neki/android/feature/pose/api/PoseResult.kt
ScrapChanged 데이터 클래스 → BookmarkChanged, 페이로드 필드명 변경
포즈 상세 화면
feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailContract.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailScreen.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailViewModel.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/component/PoseActionBar.kt
상태 필드(committedScrapcommittedBookmark), Intent(ClickScrapIconClickBookmarkIcon, ScrapCommittedBookmarkCommitted), SideEffect(NotifyScrapChangedNotifyBookmarkChanged) 변경 및 로직 업데이트
포즈 메인 화면
feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseContract.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseScreen.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/PoseViewModel.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseFilterBar.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/main/component/PoseListContent.kt
상태 필드(isShowScrappedPoseisShowBookmarkedPose, scrappedPoseListbookmarkedPoseList), Intent 및 콜백명, 필터 UI 텍스트 변경
포즈 네비게이션
feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/navigation/PoseEntryProvider.kt
ResultEffect 처리에서 PoseResult.ScrapChangedPoseResult.BookmarkChanged 변경
랜덤 포즈
feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/RandomPoseContract.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/RandomPoseScreen.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/RandomPoseViewModel.kt, feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/random/component/RandomPoseFloatingBar.kt
상태 필드(committedScrapscommittedBookmarks), Intent(ClickScrapIconClickBookmarkIcon, ScrapChangedBookmarkChanged), 컴포넌트 파라미터명 및 UI 텍스트 변경

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • [refactor] #117 scrap -> bookmark 리네이밍 #119: 동일한 "scrap" → "bookmark" 리팩토링을 같은 파일들과 메서드들(getScrappedPosesFlow → getBookmarkedPosesFlow, updateScrap → updateBookmark, ScrapPosePagingSource → BookmarkPosePagingSource 등)에서 수행하는 관련 PR

Suggested reviewers

  • Ojongseok

Poem

🐰 스크랩에서 북마크로,
명칭만 바뀌어도 깔끔해져,
로직은 그대로, 의미는 명확하게,
포즈들이 더 잘 기억되겠네! 📌✨

🚥 Pre-merge checks | ✅ 3 | ❌ 3

❌ Failed checks (3 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Random Pose 화면에서 상단 X 버튼 제거는 문서에 명시되어 있으나 이슈 #117에 포함되지 않은 추가 변경사항입니다. 상단 X 버튼 제거는 별도 이슈로 분리하거나 #117 스코프에 포함시키기 위해 이슈 설명을 업데이트하세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 7.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Merge Conflict Detection ⚠️ Warning ⚠️ Unable to check for merge conflicts: Invalid branch name format
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 'scrap -> bookmark 리네이밍'으로 변경 사항의 핵심을 명확하게 설명하고 있으며, 제공된 변경 사항 요약과 완벽하게 일치합니다.
Linked Issues check ✅ Passed PR은 링크된 이슈 #117의 요구사항을 충족합니다. 코드베이스 전반에서 'scrap' 용어를 'bookmark'로 일관되게 리네이밍했습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refactor/#117-bookmark-naming

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In
`@core/data/src/main/java/com/neki/android/core/data/paging/ScrapPosePagingSource.kt`:
- Around line 9-12: The Kotlin source file name does not match the declared
class: the class is BookmarkPosePagingSource but the file is still named
ScrapPosePagingSource.kt; rename the file to BookmarkPosePagingSource.kt to
follow Kotlin conventions and ensure any references/imports or build scripts
that reference ScrapPosePagingSource.kt are updated accordingly so the class
BookmarkPosePagingSource is defined in a matching file name.

In
`@core/data/src/main/java/com/neki/android/core/data/remote/api/PoseService.kt`:
- Around line 47-65: getBookmarkedPoses uses GET /api/poses/bookmark but
updateBookmark still calls PATCH /api/poses/$poseId/scrap and the DTO
file/class/annotation are inconsistent (UpdateScrapRequest.kt vs
UpdateBookmarkRequest and `@SerialName`("scrap")); confirm the backend contract
and make them consistent: if backend uses "bookmark" update updateBookmark to
PATCH /api/poses/{poseId}/bookmark and rename the DTO file to
UpdateBookmarkRequest.kt, the class to UpdateBookmarkRequest and change
`@SerialName`("scrap") to `@SerialName`("bookmark"); otherwise revert
getBookmarkedPoses to use /api/poses/bookmark or /api/poses/scrap to match the
PATCH, and align DTO filename/class/@SerialName accordingly (ensure references
in PoseService and any serializers are updated).
🧹 Nitpick comments (2)
core/data/src/main/java/com/neki/android/core/data/remote/model/request/UpdateScrapRequest.kt (1)

7-8: 파일명을 클래스명과 일치시키세요.

파일 UpdateScrapRequest.ktUpdateBookmarkRequest 클래스를 포함하고 있습니다. Kotlin 관례에 따라 파일명을 UpdateBookmarkRequest.kt로 변경하는 것이 좋습니다.

feature/pose/impl/src/main/java/com/neki/android/feature/pose/impl/detail/PoseDetailViewModel.kt (1)

102-113: onCleared에서 updateBookmark 실패 시 처리가 없습니다.

이번 PR에서 도입된 이슈는 아니지만, applicationScope.launch로 실행되는 updateBookmark 호출의 결과(Result)가 무시되고 있어 실패 시 사용자에게 피드백이 없습니다. 후속 개선으로 로깅이나 재시도 로직 추가를 고려해 보시기 바랍니다.

♻️ 실패 처리 추가 제안
         if (currentBookmark != committedBookmark) {
             applicationScope.launch {
                 poseRepository.updateBookmark(id, currentBookmark)
+                    .onFailure { error ->
+                        Timber.e(error, "updateBookmark on onCleared failed")
+                    }
             }
         }

Copy link
Copy Markdown
Member

@Ojongseok Ojongseok left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다-! 더이상 scrap(스크랩)을 찾아볼 수 없네요. 👍

`ScrapPosePagingSource.kt` 파일의 이름을 `BookmarkPosePagingSource.kt`로 변경하여 용어를 통일했습니다.
`/api/poses/bookmark`를 `/api/poses/scrap`으로 변경했습니다.
@ikseong00 ikseong00 merged commit b8a1214 into develop Feb 17, 2026
1 of 2 checks passed
@ikseong00 ikseong00 deleted the refactor/#117-bookmark-naming branch February 17, 2026 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[refactor] 스크랩 -> 북마크 변경

2 participants